From: Ian Jackson Date: Tue, 29 Jun 2010 14:07:17 +0000 (+0100) Subject: tools: init.d/xencommons: Wait for xenstored to start before setting dom0 name X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~11834^2~17 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success//%22http:/www.example.com/cgi/success/?a=commitdiff_plain;h=f706d9e9af66284a22cc9be5708b1ba28c083831;p=xen.git tools: init.d/xencommons: Wait for xenstored to start before setting dom0 name On one of my boxes, the xenstore-write setting dom0's name starts before xenstored is actually ready to handle the connection properly, resulting in the name set failing. Wait for xenstored to be up and responding to reads before continuing, timing out after 30 seconds. Signed-off-by: George Dunlap --- diff --git a/tools/hotplug/Linux/init.d/xencommons b/tools/hotplug/Linux/init.d/xencommons index cc52ce8820..08fa09bbc7 100644 --- a/tools/hotplug/Linux/init.d/xencommons +++ b/tools/hotplug/Linux/init.d/xencommons @@ -37,14 +37,32 @@ if ! grep -q "control_d" /proc/xen/capabilities ; then fi do_start () { + local time=0 + local timeout=30 + if ! `xenstore-read -s / >/dev/null 2>&1` then test -z "$XENSTORED_ROOTDIR" || XENSTORED_ROOTDIR="/var/lib/xenstored" rm -f "$XENSTORED_ROOTDIR"/tdb* &>/dev/null test -z "$XENSTORED_TRACE" || XENSTORED_ARGS=" -T /var/log/xen/xenstored-trace.log" - echo Starting xenstored... + echo -n Starting xenstored... xenstored --pid-file=/var/run/xenstore.pid $XENSTORED_ARGS + + # Wait for xenstored to actually come up, timing out after 30 seconds + while [ $time -lt $timeout ] && ! `xenstore-read -s / >/dev/null 2>&1` ; do + echo -n . + time=$(($time+1)) + sleep 1 + done + echo + + # Exit if we timed out + if ! [ $time -lt $timeout ] ; then + echo Could not start xenstored + exit 1 + fi + echo Setting domain 0 name... xenstore-write "/local/domain/0/name" "Domain-0" fi